/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package documentadorrepositorio.descritoresArtefatos;

import documentadorrepositorio.artefatos.Artefato;
import documentadorrepositorio.artefatos.Rastreabilidade;
import documentadorrepositorio.componentes.PainelRastreabilidade;
import documentadorrepositorio.interfaceGrafica.PrincipalIG;
import documentadorrepositorio.repositorio.AnalisadorRepositorio;
import documentadorrepositorio.util.IOUtil;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author André
 */
public class DescritorRastreabilidade extends DescritorArtefato {

    private static DescritorArtefato instancia = null;

    public static DescritorRastreabilidade obtemInstacia() throws IOException {
        if (instancia == null) {
            instancia = new DescritorRastreabilidade();
        }
        return (DescritorRastreabilidade) instancia;
    }

    private DescritorRastreabilidade() throws IOException {
        super("DescritorPastaRastreabilidade.data", "DescritorArquivoRastreabilidade.data");
    }

    @Override
    protected void criaDescritorPasta() throws IOException {
        List<String> padroesPasta = new ArrayList<>();
        padroesPasta.add("rastreabilidade");
        IOUtil.criaArquivoTexto("DescritorPastaRastreabilidade.data", padroesPasta);
    }

    @Override
    protected void criaDescritorArquivo() throws IOException {
        List<String> padroesArquivo = new ArrayList<>();
        padroesArquivo.add("-");
        padroesArquivo.add("rastreabilidade.xls");
        IOUtil.criaArquivoTexto("DescritorArquivoRastreabilidade.data", padroesArquivo);
    }

    @Override
    public String obtemTipoArtefato() {
        return "Rastreabilidade";
    }

    @Override
    protected Artefato obtemInstancia() {
        return new Rastreabilidade();
    }

    @Override
    protected boolean extensaoValida(String nomeArquivo) {
        return nomeArquivo.toLowerCase().endsWith("xls");
    }

    @Override
    protected String nomeArquivoSemExtensao(String nomeArquivo) {
        return nomeArquivo.replace(".xls", "").replace(".xls", "");
    }

    @Override
    public void destroiInstancia() {
        instancia = null;
    }
    
    @Override
    public void instanciarTela(AnalisadorRepositorio analisadorRepositorio, DescritorArtefato descritorArtefato, PrincipalIG frame) {
        frame.getTbArtefato().add(obtemTipoArtefato(), new PainelRastreabilidade());
    }
}
